ppc = read_csv(
here::here("data/participation-per-country.csv"),
col_types = cols(
.default = col_double(),
site = col_character(),
country = col_character(),
geo = col_character(),
four_regions = col_character(),
eight_regions = col_character(),
six_regions = col_character(),
`World bank income group 2017` = col_character()
)
) %>%
filter(usuarios > 200)
glimpse(ppc)
## Rows: 121
## Columns: 21
## $ site <chr> "StackOverflow", "StackOverflow", "Sta…
## $ country <chr> "Argentina", "Australia", "Austria", "…
## $ PDI <dbl> 49, 36, 11, 80, 65, 69, 70, 39, 63, 80…
## $ IDV <dbl> 46, 90, 55, 20, 75, 38, 30, 80, 23, 20…
## $ MAS <dbl> 56, 61, 79, 55, 54, 49, 40, 52, 28, 66…
## $ UAI <dbl> 86, 51, 70, 60, 94, 76, 85, 48, 86, 30…
## $ usuarios <dbl> 2798, 12313, 2518, 2558, 4275, 10717, …
## $ responderam_prop <dbl> 0.5357398, 0.6133355, 0.6310564, 0.392…
## $ perguntaram_prop <dbl> 0.5210865, 0.5897832, 0.5933280, 0.475…
## $ editaram_prop <dbl> 0.09256612, 0.14699911, 0.14932486, 0.…
## $ comentaram_prop <dbl> 0.25339528, 0.33395598, 0.35027800, 0.…
## $ GNI <dbl> NA, 59570, 48160, 840, 44990, 11630, 6…
## $ Internet <dbl> 51.0, 79.5, 79.8, 5.0, 78.0, 45.0, 51.…
## $ EPI <dbl> 59.02, NA, 63.21, NA, 61.21, 49.96, NA…
## $ geo <chr> "arg", "aus", "aut", "bgd", "bel", "br…
## $ four_regions <chr> "americas", "asia", "europe", "asia", …
## $ eight_regions <chr> "america_south", "east_asia_pacific", …
## $ six_regions <chr> "america", "east_asia_pacific", "europ…
## $ Latitude <dbl> -34.00000, -25.00000, 47.33333, 24.000…
## $ Longitude <dbl> -64.00000, 135.00000, 13.33333, 90.000…
## $ `World bank income group 2017` <chr> "Upper middle income", "High income", …
Estamos interessados na relação entre quanto as pessoas de diferentes países comentam em questões dos outros. A proporção das pessoas do país que comentou nas questões de outros está medido na variável comentaram_prop.
Considerando essa variável, queremos examinar a relação entre ela e o quão hierárquicas são as relações em um país (PDI). Queremos também levar em conta o quanto as pessoas daquele país têm acesso à Internet (Internet) e qual o tamanho da base de dados que detectamos daquele país (usuarios).
Faça uma visualização que usa os princípios de eficácia no projeto de visualizações para facilitar as comparações que você acha que são as mais importantes para entendermos esse contexto.
Bônus: inclua o continente dos países (six_regions) na visualização.
Vamos verificar um sumário de cada variável.
summary(ppc)
## site country PDI IDV
## Length:121 Length:121 Min. : 11.00 Min. : 6.0
## Class :character Class :character 1st Qu.: 40.00 1st Qu.:25.0
## Mode :character Mode :character Median : 63.00 Median :40.0
## Mean : 58.75 Mean :45.4
## 3rd Qu.: 73.00 3rd Qu.:68.0
## Max. :104.00 Max. :91.0
##
## MAS UAI usuarios responderam_prop
## Min. : 5.00 Min. : 8.0 Min. : 201 Min. :0.1212
## 1st Qu.: 40.00 1st Qu.: 49.0 1st Qu.: 569 1st Qu.:0.2634
## Median : 50.00 Median : 69.0 Median : 1294 Median :0.4054
## Mean : 50.11 Mean : 66.2 Mean : 4718 Mean :0.4015
## 3rd Qu.: 63.00 3rd Qu.: 85.0 3rd Qu.: 3128 3rd Qu.:0.5454
## Max. :110.00 Max. :112.0 Max. :130197 Max. :0.6736
##
## perguntaram_prop editaram_prop comentaram_prop GNI
## Min. :0.1511 Min. :0.00738 Min. :0.08654 Min. : 840
## 1st Qu.:0.2950 1st Qu.:0.03404 1st Qu.:0.20186 1st Qu.: 6990
## Median :0.4460 Median :0.05800 Median :0.25340 Median :14280
## Mean :0.4278 Mean :0.07187 Mean :0.25067 Mean :24448
## 3rd Qu.:0.5624 3rd Qu.:0.10851 3rd Qu.:0.30574 3rd Qu.:41750
## Max. :0.7255 Max. :0.18394 Max. :0.41681 Max. :98860
## NA's :6
## Internet EPI geo four_regions
## Min. : 5.00 Min. :39.48 Length:121 Length:121
## 1st Qu.: 42.42 1st Qu.:49.96 Class :character Class :character
## Median : 64.90 Median :53.54 Mode :character Mode :character
## Mean : 59.77 Mean :55.08
## 3rd Qu.: 79.50 3rd Qu.:59.73
## Max. :100.00 Max. :69.30
## NA's :3 NA's :36
## eight_regions six_regions Latitude Longitude
## Length:121 Length:121 Min. :-42.00 Min. :-113.64
## Class :character Class :character 1st Qu.: 14.86 1st Qu.: -0.40
## Mode :character Mode :character Median : 37.75 Median : 20.00
## Mean : 28.99 Mean : 25.18
## 3rd Qu.: 49.15 3rd Qu.: 70.00
## Max. : 64.00 Max. : 174.00
## NA's :3 NA's :3
## World bank income group 2017
## Length:121
## Class :character
## Mode :character
##
##
##
##
Considerando que o conjunto de regiões possui valores não disponíveis, vamos filtrar do nosso conjunto de dados.
ppc <- ppc %>%
filter(!is.na(six_regions))
Para investigar a relação entre a proporção de comentários entre países (comentaram_prop) e o nível de hierarquia nas relações de um país (PDI), avaliou-se que a representação mais efetiva é o gráfico de dispersão.
Seguindo o princípio da expressividade e efetividade, foi considerado válido utilizar o canal de cor para representar a variável de regiões six_regions e o canal de tamanho para representar a variável (Internet).
Inserir outra variável neste contexto pode causar poluição visual. Neste caso, foi escolhido utilizar um gráfico iterativo. Neste, representa-se a quantidade da base de usuários daquele país (usuarios) ao aproximar o ponteiro do mouse, além de outras variáveis.
# https://cdr.ibpad.com.br/ggplot2.html
# https://gramener.github.io/visual-vocabulary-vega/#/Correlation/
# https://www.r-graph-gallery.com/bubble_chart_interactive_ggplotly.html
ppc_interactive <- ppc %>%
mutate(text = paste("Country: ", country, "\nUsers: ", usuarios, "\nInternet: ", Internet, "\nSite: ", site, sep="")) %>%
ggplot(aes( x = comentaram_prop, y = PDI, fill = six_regions, size = Internet, text=text )) +
geom_point(alpha = 0.65) +
scale_size(range = c(1, 7)) +
scale_fill_viridis(discrete=TRUE) +
theme( legend.title = element_blank() ) +
ylab("Proporção de comentários entre países") +
xlab("Relação hierárquica no país")
ggplotly(ppc_interactive,
tooltip="text",
dynamicTicks = FALSE,
originalData = TRUE,
layerData = TRUE)
Em seguida, faça 5 visualizações que usem as mesmas variáveis e também pontos, mas que sejam menos eficazes que a que você escolheu acima.
O canal de forma exige bastante cuidado. Para dados com muitas categorias, como abaixo, as formas podem se sobrescrever e dificultar a identificação de cada elemento. O uso de um outro canal poderia ser mais adequado, como por exemplo o canal de cor.
ppc %>%
ggplot(aes( x = comentaram_prop, y = PDI, shape = six_regions, size = Internet )) +
geom_point(alpha = 0.65) +
scale_size(range = c(1, 7)) +
scale_color_viridis(discrete=TRUE) +
ylab("Proporção de comentários entre países") +
xlab("Relação hierárquica no país")
Usar tons diferentes facilita a identificação de categorias. Em diversos casos, a paleta de cores escolhida pode confundir o público no momento de analisar os pontos.
ppc %>%
ggplot(aes( x = comentaram_prop, y = PDI, color = six_regions, size = Internet )) +
geom_point(alpha = 0.65) +
scale_colour_hue(h = c(180, 270), na.value = "black") +
ylab("Proporção de comentários entre países") +
xlab("Relação hierárquica no país")
O canal de tamanho pode ser utilizado para incluir uma variável contínua. Usar um tamanho pequeno pode impedir de diferenciar, ou mesmo encontrar, pontos específicos, mesmo com a ajuda de outros canais.
ppc %>%
ggplot(aes( x = comentaram_prop, y = PDI, color = six_regions, alpha = Internet )) +
geom_point() +
scale_color_viridis(discrete=TRUE) +
ylab("Proporção de comentários entre países") +
xlab("Relação hierárquica no país")
Neste caso, repara-se que a remoção do canal de transparência causa aglomeração de diversos pontos, impedir de visualizar, por exemplo, pontos que estão alinhados.
ppc %>%
ggplot(aes( x = comentaram_prop, y = PDI, color = six_regions, size = Internet )) +
geom_point() +
scale_color_viridis(discrete=TRUE) +
ylab("Proporção de comentários entre países") +
xlab("Relação hierárquica no país")
O uso de diversos canais em um mesmo gráfico precisa de bom senso para não causar poluição visual. Usar os canais de cor e forma para a mesma variável de categoria acaba adicionando um overhead desnecessário para entendimento do gráfico.
ppc %>%
ggplot(aes( x = comentaram_prop, y = PDI, color = six_regions, shape = six_regions, size = Internet)) +
geom_point(alpha = 0.65) +
scale_size(range = c(1, 7)) +
scale_color_viridis(discrete=TRUE) +
ylab("Proporção de comentários entre países") +
xlab("Relação hierárquica no país")
A utilização dos canais na visualização de dados deve ser avaliada de forma a elimitar o desnecessário para comunicar a mensagem. Os elementos devem ter a função de passar uma informação crítica. Além disso, a visualização precisa ser consistente e apresentar os elementos sem causar ambiguidade.